CouchDB-তে Views তৈরি করা একটি গুরুত্বপূর্ণ ফিচার যা ডেটা কুয়েরি করার জন্য MapReduce প্যাটার্ন ব্যবহার করে। View-গুলো CouchDB এর ডেটাবেসে স্টোর করা ডেটা বিশ্লেষণ, ফিল্টার এবং কাস্টম কুয়েরি করার জন্য ব্যবহৃত হয়। View তৈরি করার জন্য Map এবং Reduce ফাংশন ব্যবহার করা হয়, যা আপনাকে ডেটা প্রসেসিংয়ের জন্য কাস্টম কুয়েরি তৈরি করতে সহায়তা করে।
1. View কী?
- View CouchDB-তে একটি read-only ফিচার, যা ডেটা প্রক্রিয়া ও কাস্টম কুয়েরি পরিচালনার জন্য ব্যবহার করা হয়।
- Map function: একটি ফাংশন যা প্রতিটি ডকুমেন্ট থেকে কাস্টম key-value পেয়ার তৈরি করে।
- Reduce function: এই ফাংশনটি map ফাংশন থেকে প্রাপ্ত key-value পেয়ারগুলোর উপর কাজ করে এবং তাদের পরিসংখ্যান তৈরি বা সংক্ষেপিত ফলাফল প্রদান করে।
2. Views তৈরি করার ধাপসমূহ
a. View তৈরি করার জন্য Database নির্বাচন করুন
CouchDB-তে View তৈরি করার জন্য প্রথমে আপনাকে একটি ডেটাবেসে প্রবেশ করতে হবে যেখানে আপনি View তৈরি করবেন।
curl -X GET http://127.0.0.1:5984/my_database
b. View তৈরি করা
CouchDB তে View তৈরি করার জন্য আপনাকে Design Document তৈরি করতে হবে। Design Document হচ্ছে এমন একটি ডকুমেন্ট যা views এবং অন্যান্য কার্যাবলী সংরক্ষণ করে। নিচে একটি উদাহরণ দেয়া হলো কিভাবে একটি view তৈরি করা যায়।
- Design Document তৈরি করুন: আপনি একটি Design Document তৈরি করবেন যেটিতে views এবং তাদের কুয়েরি ফাংশন থাকবে। Design Document তৈরি করার জন্য
PUTরিকুয়েস্ট ব্যবহার করুন।
curl -X PUT http://127.0.0.1:5984/my_database/_design/my_design_doc -d '{
"views": {
"by_name": {
"map": "function(doc) { emit(doc.name, doc); }"
}
}
}'
এখানে by_name হচ্ছে View-এর নাম, যা ডকুমেন্টগুলির name ফিল্ডের ভিত্তিতে ডেটা এমিট করবে। Map ফাংশনে emit() ফাংশন ব্যবহার করে একটি key-value পেয়ার তৈরি করা হচ্ছে, যেখানে doc.name হল key এবং doc হল value।
c. View কুয়েরি করা
Design Document তৈরি হওয়ার পর, আপনি View কুয়েরি করতে পারেন। GET রিকুয়েস্টের মাধ্যমে View এর ডেটা অ্যাক্সেস করা হয়:
curl -X GET http://127.0.0.1:5984/my_database/_design/my_design_doc/_view/by_name
এই কুয়েরিটি name ফিল্ডের ভিত্তিতে সমস্ত ডকুমেন্ট ফেরত দেবে, যা by_name ভিউ অনুযায়ী সাজানো থাকবে।
d. Reduce function ব্যবহার
আপনি যদি Reduce function ব্যবহার করতে চান, তখন Map ফাংশনের পর Reduce ফাংশন যোগ করতে হবে। নিচে একটি উদাহরণ দেখানো হলো:
curl -X PUT http://127.0.0.1:5984/my_database/_design/my_design_doc -d '{
"views": {
"count_by_name": {
"map": "function(doc) { emit(doc.name, 1); }",
"reduce": "function(keys, values, rereduce) { return sum(values); }"
}
}
}'
এখানে:
- Map function:
doc.nameকে key হিসেবে এবং1কে value হিসেবে emit করা হচ্ছে। - Reduce function: sum(values) ব্যবহার করে একই নামের ডকুমেন্টগুলোর সংখ্যা যোগফল করা হচ্ছে।
e. View কুয়েরি করা (Reduce function সহ)
এখন, আপনি Reduce ফাংশন সহ View কুয়েরি করতে পারবেন:
curl -X GET http://127.0.0.1:5984/my_database/_design/my_design_doc/_view/count_by_name?reduce=true
এটি কেবল একক সংখ্যা প্রদান করবে যা দেখাবে প্রতিটি নামের মোট occurrences কত ছিল।
3. Temporary Views তৈরি করা
Temporary Views হলো অস্থায়ী Views, যা একক সেশন বা অ্যাপ্লিকেশনের জন্য তৈরি করা হয়। এটি সার্ভারে ডিজাইন ডকুমেন্ট সংরক্ষণ না করে শুধুমাত্র একটি Map এবং Reduce ফাংশন ব্যবহার করে কুয়েরি তৈরি করা যায়।
উদাহরণ:
curl -X GET http://127.0.0.1:5984/my_database/_temp_view -d '{
"map": "function(doc) { emit(doc.name, 1); }",
"reduce": "function(keys, values, rereduce) { return sum(values); }"
}'
এই কুয়েরিটি একটি temporary view তৈরি করবে এবং name অনুযায়ী কনটেন্টের সংখ্যা প্রদান করবে।
4. Complex Query জন্য MapReduce ব্যবহার
MapReduce ফাংশন ব্যবহার করে আপনি জটিল কুয়েরি তৈরি করতে পারেন, যেমন ডকুমেন্টগুলির মধ্যে সম্পর্ক বের করা বা কিছু অ্যাগ্রিগেটেড ডেটা হিসাব করা।
উদাহরণ: একটি Complex Query তৈরি করা
ধরা যাক, আমাদের একটি ডেটাবেসে বিভিন্ন প্রোডাক্টের তথ্য সংরক্ষিত আছে, এবং আমরা মোট বিক্রির পরিমাণ বের করতে চাই।
- Design Document তৈরি করুন:
curl -X PUT http://127.0.0.1:5984/my_database/_design/sales -d '{
"views": {
"total_sales": {
"map": "function(doc) { emit(doc.product_id, doc.sales); }",
"reduce": "function(keys, values, rereduce) { return sum(values); }"
}
}
}'
- View কুয়েরি করা:
curl -X GET http://127.0.0.1:5984/my_database/_design/sales/_view/total_sales?reduce=true
এটি প্রতিটি প্রোডাক্টের জন্য মোট বিক্রির পরিমাণ দেবে।
5. Views ব্যবহার করার সুবিধা
- কাস্টম কুয়েরি তৈরি: Views আপনাকে কাস্টম কুয়েরি তৈরি করতে দেয় যা আপনার প্রয়োজনীয় ডেটা সহজে খুঁজে পেতে সাহায্য করে।
- পারফরম্যান্স: Views কুয়েরি করার সময় পারফরম্যান্স দ্রুত হয়, কারণ একবার ক্যালকুলেট হওয়া ডেটা ক্যাশে রাখা হয়।
- সংক্ষেপিত ফলাফল: Reduce ফাংশন ব্যবহারের মাধ্যমে আপনি বড় ডেটাসেটের থেকে সংক্ষেপিত বা মোট হিসাব পেতে পারেন।
উপসংহার
CouchDB তে Views তৈরি করা খুবই শক্তিশালী এবং নমনীয়। MapReduce ফাংশন ব্যবহার করে আপনি কাস্টম কুয়েরি তৈরি করতে পারেন যা আপনার ডেটা বিশ্লেষণ ও কার্যকরভাবে পরিচালনা করার জন্য উপকারী। Permanent Views এবং Temporary Views তৈরির মাধ্যমে CouchDB তে জটিল কুয়েরি সহজেই সম্পন্ন করা সম্ভব।
Read more